package vista.ventanaTarea;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;
import javax.swing.JPanel;

import modelo.tareas.Tarea;

/**
 * @author Cristian
 * 
 * */
public class SeleccionarTareaCompuesta implements ActionListener {
	
	//Variable *********************************************************** //
	private AgregarTareaAlProyecto ventana;
	
	//Constructor *********************************************************** //
	public SeleccionarTareaCompuesta(AgregarTareaAlProyecto ventana){
		this.setVentana(ventana);
	}
	
	/**
	 * @param tareaABuscar
	 * @
	 * Busca en la lista de tareas, el nombre de la tarea pasada por parametro y la devuelve, para poder
	 * utilizarla cuando creo una tarea con  predecesor
	 */
	public Tarea buscarTareaPorNombre (String tareaABuscar){
	 Tarea tareaADevolver = null;
		for (Tarea tarea: this.ventana.getProyectoSistema().getTareas()){
			if (!tarea.getNombre().equalsIgnoreCase(tareaABuscar)){
				tareaADevolver = tarea; 
			}
		} 
		return tareaADevolver; 
	}
	
	/**
	 * Elige de un JComboBox a la tarea que la compone entre las tareas que estan cargadas al sistema y
	 * las guarda en una lista.
	 * No se puede elegir la misma tarea.
	 * */
	public void actionPerformed(ActionEvent arg0) {
		
		String tareaString = (String) this.ventana.getListaTareas().getSelectedItem();
		boolean seRepiteTarea = false;
		Tarea tarea = buscarTareaPorNombre(tareaString);
		this.ventana.setTareaPredecesora(tarea);
		
		for(Tarea t: this.ventana.getTareasCompuestas()){
			if(t == tarea){
				JPanel panel = new JPanel();
				JOptionPane.showMessageDialog(panel, "Ya se encuentra esa Tarea",
						"Error", JOptionPane.ERROR_MESSAGE);
				seRepiteTarea = true;
				break;
			}
		}
		if(!seRepiteTarea){
			this.ventana.agregarTarea(tarea);
		}
	}

	//GET&SET     *********************************************************** //
	public void setVentana(AgregarTareaAlProyecto ventana) {
		this.ventana = ventana;
	}

	public AgregarTareaAlProyecto getVentana() {
		return ventana;
	}

}
